package com.jt.provider.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalTime;

/**
 * 遵循spring mvc规范，自定义拦截器，对要访问controller方法的请求进行拦截。
 * 然后可以基于业务对请求进行一个预处理。例如进行时间访问控制？(类似12306上的
 * 订票业务)
 */
public class TimeInterceptor implements HandlerInterceptor {
    /**
     * 此方法会在目标controller方法执行之前执行
     * @param request
     * @param response
     * @param handler 这个handler对象，对应了你的目标controller
     * @return 这个返回结果决定了此请求是否放行，false表示不放行。
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) throws Exception {
        System.out.println("==preHandle==");
        LocalTime now = LocalTime.now();
        int hour = now.getHour();
        if(hour<6||hour>23)
            throw new RuntimeException("请在6~23点之间访问");
        return true;//true表示放行
    }

}
